<?php

/**
 * Classe représentant une tache.
 * @author LESAGE Alexandre
 * @since 25 septembre 2013
 * @version 1.0
 */

class Tache
{
		/* Attributs */
	/**
	 * Identifiant de la tache
	 * @var int
	 */
	private $_id;
	/**
	 * Libellé de la tache.
	 * @var string
	 */
	private $_libelle;
	/**
	 * Date de réalisation de la tâche
	 * @var date
	 */
	private $_echeance;
	/**
	 * ID de l'etudiant ayant fait la tache
	 * @var int
	 */
	private $_id_etudiant;
	/**
	 * Action associé à la tache réalisé
	 * @var int
	 */
	private $_id_adc;
	
	/**
	 * Etudiant auteur de la tache
	 * @var int
	 */
	private $_auteur_tache;

		/* Constructeurs & Destructeurs */
	public function __construct()
	{
		$args = func_get_args();
		
		switch(func_num_args())
		{
			case 1 : // juste l'id de la tache.
				$this->set_id($args[0]);
				break;
			case 5 : // LIBELLE_TACHE, ECHEANCE_TACHE, ID_ETU_TACHE, ID_ADC_TACHE, AUTEUR_TACHE
				$this->set_libelle($args[0]);
				$this->set_echeance($args[1]);
				$this->set_id_etudiant($args[2]);
				$this->set_id_adc($args[3]);
				$this->set_auteur_tache($args[4]);
				break;
			default:
				trigger_error('Constructeur de Tache avec ' + func_num_args() + ' non défini.');
				break;
		}
	}

	/* Méthodes BDD */
	
	public static function getAllTacheADC($id_adc)
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	'SELECT '.ID_TACHE.', '.LIBELLE_TACHE.', DATE_FORMAT('.ECHEANCE_TACHE.',\'%d/%m/%Y\') AS "'.ECHEANCE_TACHE.'", '.ID_ETU_TACHE.', '.ID_ADC_TACHE.', '.AUTEUR_TACHE.'
								 FROM '.TABLE_TACHE.'
								 WHERE '.ID_ADC_TACHE.' = \''.$id_adc.'\'');
		$don= $donnees->fetchAll();
		$donnees->closeCursor();
		if(!empty($don))
		{
			foreach($don as $d)	
			{
				$t[] = new Tache($d[LIBELLE_TACHE],$d[ECHEANCE_TACHE],$d[ID_ETU_TACHE],$id_adc, $d[AUTEUR_TACHE]);
			}
			return $t;
		}
		else 
			return false;
	}
	
	public static function getAllTacheADCFromArchive($id_adc)
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	'SELECT '.ID_TACHE.', '.LIBELLE_TACHE.', DATE_FORMAT('.ECHEANCE_TACHE.',\'%d/%m/%Y\') AS "'.ECHEANCE_TACHE.'", '.ID_ETU_TACHE.', '.ID_ADC_TACHE.', '.AUTEUR_TACHE.'
								 FROM '.TABLE_TACHE.'_archive
								 WHERE '.ID_ADC_TACHE.' = \''.$id_adc.'\'');
		$don= $donnees->fetchAll();
		$donnees->closeCursor();
		if(!empty($don))
		{
			foreach($don as $d)
			{
				$t[] = new Tache($d[LIBELLE_TACHE],$d[ECHEANCE_TACHE],$d[ID_ETU_TACHE],$id_adc, $d[AUTEUR_TACHE]);
			}
			return $t;
		}
		else
			return false;
	}
	
	
	public function saveOneTache()
	{
		$echeance = $this->putDateAAAAMMJJ($this->get_echeance());
		
		$bdd = PDO2::getInstance();
		$result = $bdd->exec('INSERT INTO '.TABLE_TACHE.' ('.LIBELLE_TACHE.', '.ECHEANCE_TACHE.', '.ID_ETU_TACHE.', '.ID_ADC_TACHE.', '.AUTEUR_TACHE.')
							VALUES ("'.$this->get_libelle().'", "'.$echeance.'", "'.$this->get_id_etudiant().'", "'.$this->get_id_adc().'", "'.$this->get_auteur_tache().'")');
		
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public static function delAllTacheADC($idADC)
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec(
							'DELETE FROM '.TABLE_TACHE.
								' WHERE '.ID_ADC_TACHE.' = '.$idADC		
				);
		if($result == 0)
			return false;
		else
			return true;
	}

	public static function delTacheAuteurADC($idADC, $idAuteur)
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec(
				'DELETE FROM '.TABLE_TACHE.'
				 WHERE '.ID_ADC_TACHE.' = '.$idADC.'
				 AND '.AUTEUR_TACHE.' = '.$idAuteur
				
		);
		if($result == 0)
			return false;
		else
			return true;
	}
	
	/* Getteurs & Setteurs */
	/**
	 * Fonction permettant de récupérer l'identifiant de la tache.
	 * @access public
	 * @return int $_id
	 */
	public function get_id()
	{
		return $this->_id;
	}

	public function set_id($id)
	{
		$this->_id=$id;
	}
	
	/**
	 * Fonction permettant de récupérer le libellé de la tache.
	 * @access public
	 * @return string $_libelle
	 */
	public function get_libelle()
	{
		return $this->_libelle;
	}

	/**
	 * Fonction permettant de modifier le libellé de la tache.
	 * @access public
	 * @param string $_libelle
	 */
	public function set_libelle($libelle)
	{
		$this->_libelle=$libelle;
	}

	/**
	 * Fonction permettant de récupérer la date d'échéance de la tache.
	 * @access public
	 * @return date
	 */
	public function get_echeance()
	{
		return $this->_echeance;
	}

	/**
	 * Fonction permettant de modifier la date d'échéance de la tache.
	 * @access public
	 * @param date
	 */
	public function set_echeance($echeance)
	{
		$this->_echeance=$echeance;
	}
	
	/**
	 * Fonction permettant de récupérer l'étudiant de la tache.
	 * @access public
	 * @return Etudiants
	 */
	public function get_etudiant()
	{
		$e = new Etudiants($this->get_id_etudiant());
		$e->getOneEtudiant();
		return $e;
	}

	public function get_etudiantFromArchive()
	{
		$e = new Etudiants($this->get_id_etudiant());
		$e->getOneEtudiantFromArchive();
		return $e;
	}
	
	/**
	 * Fonction permettant de récupérer l'id de l'étudiant ayant réalisé la tache.
	 * @access public
	 * @return int
	 */
	public function get_id_etudiant()
	{
		return $this->_id_etudiant;
	}

	/**
	 * Fonction permettant de modifier l'id de l'étudiant ayant réalisé la tache.
	 * @access public
	 * @param int
	 */
	public function set_id_etudiant($id_etudiant)
	{
		$this->_id_etudiant=$id_etudiant;
	}

	/**
	 * Fonction permettant de récupérer l'id de l'action de communication associé à la tache.
	 * @access public
	 * @return int
	 */
	public function get_id_adc()
	{
		return $this->_id_adc;
	}

	/**
	 * Fonction permettant de modifier l'id de l'action de communication associé à la tache.
	 * @access public
	 * @param int
	 */
	public function set_id_adc($adc)
	{
		$this->_id_adc=$adc;
	}
	
	/**
	 * Fonction permettant de récupérer l'étudiant auteur de la tache.
	 * @access public
	 * @return Etudiants
	 */
	public function get_etudiant_auteur()
	{
		$e = new Etudiants($this->get_auteur_tache());
		$e->getOneEtudiant();
		return $e;
	}
	
	
	/**
	 * Fonction permettant de récupérer l'étudiant auteur de la tache
	 * @return int
	 */
	public function get_auteur_tache()
	{
		return $this->_auteur_tache;
	}
	
	/**
	 * Fonction permettant de modifier l'étudiant auteur de la tache
	 * @param int
	 */
	public function set_auteur_tache($auteur)
	{
		$this->_auteur_tache=$auteur;
	}
	
	/*Methode*/
	/**
	 * Fonction permettant d'écrire un date de la forme JJ-MM-AAAA en AAAA-MM-JJ.
	 * @param string $date
	 * @return string
	 */
	private function putDateAAAAMMJJ($date)
	{
		$d = preg_split("-/-", $date);
		return $d[2]."-".$d[1]."-".$d[0];
	}

}
?>